package org.mendoza.salud.hvt.client.local.gui.persona;


import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.user.client.ui.Composite;
import org.gwtbootstrap3.client.ui.Button;
import org.gwtbootstrap3.client.ui.TextBox;
import org.gwtbootstrap3.extras.datetimepicker.client.ui.DateTimePicker;
import org.gwtbootstrap3.extras.datetimepicker.client.ui.base.constants.DateTimePickerView;
import org.jboss.errai.common.client.api.Caller;
import org.jboss.errai.common.client.api.RemoteCallback;
import org.jboss.errai.databinding.client.api.DataBinder;
import org.jboss.errai.ui.shared.api.annotations.*;
import org.mendoza.salud.hvt.client.local.gui.mywidgets.MyListBox;
import org.mendoza.salud.hvt.client.shared.model.global.Persona;
import org.mendoza.salud.hvt.client.shared.model.global.TipoDeDocumento;
import org.mendoza.salud.hvt.client.shared.services.PersonaServiceRemote;

import javax.annotation.PostConstruct;
import javax.inject.Inject;
import java.util.List;

@Templated("#editor")
public class PersonaEdit extends Composite {
    @Inject
    Caller<PersonaServiceRemote> personaServiceRemoteCaller;

    @Inject
    @AutoBound
    DataBinder<Persona> personaModel;

    @Inject @Bound
    @DataField("nombres")
    TextBox nombres;

    @Inject @Bound
    @DataField("apellidos")
    TextBox apellidos;

    @Inject @Bound
    @DataField("fechaDeNacimento")
    DateTimePicker fechaDeNacimiento;

    @Inject
    @DataField("tipoDeDocumento")
    MyListBox<TipoDeDocumento> tiposDeDocumentoListBox;

    @Inject
    @DataField
    private Button ok;

    @PostConstruct
    public void init() {
        fechaDeNacimiento.setPlaceholder("DD/MM/AAAA");
        fechaDeNacimiento.setFormat("dd/mm/yyyy");
        fechaDeNacimiento.setMinView(DateTimePickerView.MONTH);
    }

    public void findTiposDeDocumento() {
        personaServiceRemoteCaller.call(new RemoteCallback<List<TipoDeDocumento>>() {
            @Override
            public void callback(List<TipoDeDocumento> tiposDeDocumentos) {
                tiposDeDocumentoListBox.setObjetos(tiposDeDocumentos);
            }
        }).getAllTipoDeDocumento();

    }

    @EventHandler("ok")
    public void okButtonClick(ClickEvent event) {
        findTiposDeDocumento();
    }


}
